package cc.lj.internal.coupons.domain.ticket.service;

import cc.lj.internal.core.model.PageBean;
import cc.lj.internal.core.model.PageParam;
import cc.lj.internal.coupons.domain.ticket.model.vo.CouponsSettlementDO;
import cc.lj.internal.coupons.domain.ticket.model.vo.TicketBatchDO;

import java.util.List;

/**
 * 电子券批次表领域层service api
 * @author liangxifeng
 * @date 2021-12-14
 */
public interface ITicketBatchDomainService {
    /**
     * 分页查询数据
     * @param pageParam
     * @return
     */
    PageBean<TicketBatchDO> selectPage(PageParam<TicketBatchDO> pageParam);

    /**
     * 通过主键查询一条记录
     * @param id
     * @return 实体DO
     */
    TicketBatchDO getById(Integer id);

    /**
     * 根据id修改
     * @param ticketBatchDO
     * @return 影响行数
     */
    Integer updateById(TicketBatchDO ticketBatchDO);

    /**
     * 绑定活动编号到批次中
     * @param batchId 券批次主键
     * @param activityCode 各活动编号
     * @return
     */
    Integer bindActivityCode(Integer batchId, String activityCode);

    /**
     * 普通非主键方式查询
     * @param ticketBatchDO
     * @return 券批次list
     */
    List<TicketBatchDO> getList(TicketBatchDO ticketBatchDO);


    /**
     * 解绑电子券批次与活动关系，也就是将电子券批次表中活动编号字段修改为空
     * @param batchId 电子券批次表主键
     * @return 影响行数
     */
    Integer unBindActivityCode(Integer batchId);

    /**
     * 查询未开始且未关联过促销活动的批次list
     * @return
     */
    List<TicketBatchDO> getNoStartList();

    /**
     * 通过主键批量查询电子券批次数据
     * @param batchIds 电子券批次表主键List
     * @return 电子批次list
     */
    List<TicketBatchDO> getListByIds(List<Integer> batchIds);

    /**
     * 生成电子券批次原始分摊比例相关数据
     * @param batchId 电子券批次主键
     * @return
     */
    CouponsSettlementDO createOldShare(Integer batchId);
}
